<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>
        // ------------- 代码 1 ===和 Object.is 的相同之处 -------------
        // Object.is()比较两个值是否严格相等，与（===）的行为基本一致。
        console.log("'1' == 1", '1' == 1);//true
        // 类型不一致，结果都是 false
        console.log("'1' === 1", '1' === 1);//false
        console.log("Object.is(1, '1')", Object.is(1, '1'));//false
        // 类型一致，结果才是 true
        console.log("'1' === '1'", '1' === '1');//true
        console.log("Object.is('1', '1')", Object.is('1', '1'));//true
        
        // {} 创建了新对象，所以两个{}内存地址是不相等的
        console.log("{} === {}", {} === {});// false
        console.log("Object.is({},{})", Object.is({}, {}));//false
        
        // ------------- 代码 2 ===和 Object.is 的不同之处 -------------
        // NaN 与任何值都不相等包括自身，所以（===）会返回 false
        console.log("NaN === NaN", NaN === NaN);// false
        // 但是 Object.is 方法比较则会返回 true
        console.log("Object.is(NaN,NaN)", Object.is(NaN, NaN));// true
        
        // +0 和-0 （===）认为相等，但是 Object.is 方法认为不相等
        console.log("+0 === -0", +0 === -0);// true
        console.log("Object.is(+0,-0)", Object.is(+0, -0));// false
    </script>
</head>
<body>
    
</body>
</html>